This invention relates to a microprogram control system for microprogram debugging in which debugging of a microprogram can be readily performed, and more particularly to a system of debugging a data processing device in which a user program is written at microinstruction levels.
At first, it should be noted that the term "microinstruction" used herein does not mean higher level instructions with which conventional user programs are described, but means an instruction one level removed.
Generally an electronic computer is provided with a program memory device and a data memory device and a higher level instruction representing a user program is stored in the latter, while an instruction corresponding to one instruction of the user program and instructing more detailed computations and data processings are written into the former. In such a case, the program is called a microprogram in contrast to the higher level instruction.
Since a microprogram is closely related to the processing speed of the computer, writing programs at this level simplifies not only software processing but also hardware construction.
In recent years, a bit slice type microprocessor utilizing a high speed bipolar element, and a program sequencer of the same family have been developed. With these LSI.sub.s it is possible to effect high speed processing of microprograms and to fabricate a versatile architecture.
Bit slice elements enable a flexible bit construction for a microprogram thereby enabling a user to write a program directly into a microprogram region. The reason for locating the microprogram in the microprogram region is that an extremely high speed data processing can be achieved because the user instruction can be quickly executed at the microprogram level.
However, debugging of such a system involves more difficult problems than the debugging of higher level instruction words in an ordinary memory. Each higher level instruction has a microprogram processing routine for each word so there is sufficient time to make a detailed check for errors. Items being processed include a check of an interruption signal representing a debugging request of an operator. A program counter corresponding to one word of the higher level instruction is also provided and the progress control of the program may be effected by this counter.
In contrast, when debugging a system wherein the user program is described at microprogram levels, since there is no processing routine which is more detailed than the program level, consideration must be given to each microinstruction. This can be readily understood in view of the fact that an operator's debugging request may occur for each and every microinstruction.
The term "operator's request" is used herein to mean read/write, run, address stop, single step operation, etc. of a register utilized in a computation processing. Generally, the debugging of the program can respond to any operator's request provided that the progress address of the program can be saved. The same is true for a flag representing the result of a computation, but since the present invention concerns a microprogram, debugging processing of a flag will not be described. Thus, even when a user program is written in a microprogram region, so long as a program progress address (hereinafter called a next address) can be preserved, debugging of the program can be performed.